【爬虫基础】Scrapy爬虫框架
本文作者:胡艺粼 中南财经政法大学金融学院
本文编辑:董高飞
技术总编:金点
Stata and Python 数据分析
爬虫俱乐部Stata基础课程、Stata进阶课程和Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~Scrapy是一个基于twisted的异步处理框架,用于抓取网站并从页面中提取结构化数据。Scrapy通过引擎(Scrapy Engine)、调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和项目管道(Item Pipeline)等“组件”实现请求发送、数据提取处理和保存等操作。
引擎(Scrapy Engine):负责整个系统的数据流处理。 调度器(Scheduler):接受引擎发送的requsts请求,按照一定的方式排列入队,在引擎再次请求时返回。 下载器(Downloader):下载引擎发送的所有requests请求,并将获取到的内容返回给爬虫。 爬虫(Spider):负责处理所有response,分析提取所需信息,如果是所需item信息,则传输给项目管道进行保存;如果解析出来的是下一层链接,那么就继续传导给调度器。 项目管道(Item Pipeline):负责处理爬虫中获取到的item信息,包括详细分析、过滤和清除不需要的信息、持久化储存等。
在终端使用pip install scrapy命令进行安装。安装后,在终端中输入scrapy命令,如果没有报错即为安装成功。
首先使用终端指令创建一个项目。假设我们将其放在E盘python文件夹下,创建一个叫Example的项目。具体操作如下:
scrapy startproject Example
cd Example #爬虫文件必须新建在Spider的子目录中,所以在创建爬虫文件之前要进入到刚才创建的项目文件夹中
scrapy genspider ExampleName www.xxx.com
import scrapy
class ExamplenameSpider(scrapy.Spider):
name = "ExampleName"
allowed_domains = ['douban.com']
start_urls = ["https://book.douban.com/top250?start=0"]
def parse(self, response):
div_list = response.xpath('//div[@class="indent"]/table')
for div in div_list:
item = {}
item['title'] = div.xpath("./tr/td[2]/div/a/@title").extract()[0]
item['detail'] = div.xpath("./tr/td[2]/p[@class='pl']/text()").extract()[0]
item['slogan'] = div.xpath("./tr/td[2]/p[@class='quote']/span/text()").get()
yield item
from itemadapter import ItemAdapter
import json
class ExamplePipeline:
def process_item(self, item, spider):
content=json.dumps(item, ensure_ascii=False)+"\n"
f.write(content)
scrapy crawl ExampleName
END
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐迈向交互式编程,ChatGPT更新!一个简单又好玩的Python库——MyQR
replace命令的“加强版”!——如何使用ereplace,结合egen
XML 轻松读取:用 Python 发现数据宝藏
爬虫俱乐部重磅推出cnstata.com.cn
Markdown:让数学公式输入更方便!
处理日期的好手:pendulumWhat’ new ? 速通Stata 18
【爬虫实战】Python爬取美食菜谱揭秘网络中心人物,你会是其中之一吗?考研之后,文科生需以“do”躬“do”!焕新升级!轻松获取港股、权证的历史交易数据爬虫俱乐部的精彩答疑---cntraveltime【爬虫俱乐部新命令速递】在Stata中与ChatGPT对话用`fs`命令批量获取文件夹和不同文件夹下的excel文件
自然语言处理之实例应用 关于我们微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。